package pe.edu.claretiano.admisionmatricula.matricula.managedbean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import pe.edu.claretiano.admisionmatricula.bean.DetalleHorario;
import pe.edu.claretiano.admisionmatricula.bean.Horario;
import pe.edu.claretiano.admisionmatricula.bean.Matricula;
import pe.edu.claretiano.admisionmatricula.matricula.service.HorarioService;
import pe.edu.claretiano.admisionmatricula.matricula.serviceimpl.HorarioServiceImpl;
import pe.edu.claretiano.admisionmatricula.util.Utilitario;

@ManagedBean(name = "horarioManagedBean")
@SessionScoped
public class HorarioManagedBean {
	
	private Horario horario = new Horario();
	private Matricula matricula = new Matricula();
	private HorarioService servicioHorario;
	private List<DetalleHorario> lstHorarioLunes = new ArrayList<DetalleHorario>();
	private List<DetalleHorario> lstHorarioMartes = new ArrayList<DetalleHorario>();
	private List<DetalleHorario> lstHorarioMiercoles = new ArrayList<DetalleHorario>();
	private List<DetalleHorario> lstHorarioJueves = new ArrayList<DetalleHorario>();
	private List<DetalleHorario> lstHorarioViernes = new ArrayList<DetalleHorario>();
	private List<DetalleHorario> lstHorarioSabado = new ArrayList<DetalleHorario>();
	
	public HorarioManagedBean() {

		servicioHorario = new HorarioServiceImpl();
	}
	
	public void consultarMatriculaHorario(){
		System.out.println(matricula.getCodigoAlumno());
		if(matricula.getCodigoAlumno() != ""){
			matricula = servicioHorario.obtenerMatriculaRegistrada(matricula);
		}
		
	}
	
	public void obtenerHorario(){
		if(matricula.getCodigoAlumno() != ""){
			horario.setAnioHorario(matricula.getAnioEstMatricula().toString());
			horario.setSeccionHorario(matricula.getSeccion());
			horario.setNivelHorario(matricula.getNivelMatricula());
			
			horario = servicioHorario.obtenerHorario(horario);
			horario.setDia("LUNES");
			lstHorarioLunes = servicioHorario.obtenerDetalleHorario(horario);
			horario.setDia("MARTES");
			lstHorarioMartes = servicioHorario.obtenerDetalleHorario(horario);
			horario.setDia("MIERCOLES");
			lstHorarioMiercoles = servicioHorario.obtenerDetalleHorario(horario);
			horario.setDia("JUEVES");
			lstHorarioJueves = servicioHorario.obtenerDetalleHorario(horario);
			horario.setDia("VIERNES");
			lstHorarioViernes = servicioHorario.obtenerDetalleHorario(horario);
			horario.setDia("SABADO");
			lstHorarioSabado = servicioHorario.obtenerDetalleHorario(horario);
		}
		
	}
	
	public void registrarHorarioMatricula(){
		String mensaje = "";
		Integer tipoMensaje = 0;
		
		if(matricula.getCodigoAlumno() != ""){
			Matricula horarioRegistrado = servicioHorario.obtenerHorarioRegistrado(matricula);
			
			if(horarioRegistrado != null){
				tipoMensaje = 1;
				mensaje = "La matricula ya tiene un horario asignado";
				
			}else{
				matricula.setCodigoHorario(horario.getCodigo());
				servicioHorario.actualizarHorarioMatricula(matricula);
				
				tipoMensaje = 3;
				mensaje = "Horario asignado correctamente";
			}
			
			Utilitario.showFacesMessage(mensaje, tipoMensaje);
		}
		
	}
	
	public void cancelar(){
		String mensaje = "";
		Integer tipoMensaje = 0;
		matricula = new Matricula();
		horario = new Horario();
		lstHorarioLunes = new ArrayList<DetalleHorario>();
		lstHorarioMartes = new ArrayList<DetalleHorario>();
		lstHorarioMiercoles = new ArrayList<DetalleHorario>();
		lstHorarioJueves = new ArrayList<DetalleHorario>();
		lstHorarioViernes = new ArrayList<DetalleHorario>();
		lstHorarioSabado = new ArrayList<DetalleHorario>();
		Utilitario.showFacesMessage(mensaje, tipoMensaje);
	}

	public Horario getHorario() {
		return horario;
	}

	public void setHorario(Horario horario) {
		this.horario = horario;
	}

	public Matricula getMatricula() {
		return matricula;
	}

	public void setMatricula(Matricula matricula) {
		this.matricula = matricula;
	}

	public List<DetalleHorario> getLstHorarioLunes() {
		return lstHorarioLunes;
	}

	public void setLstHorarioLunes(List<DetalleHorario> lstHorarioLunes) {
		this.lstHorarioLunes = lstHorarioLunes;
	}

	public List<DetalleHorario> getLstHorarioMartes() {
		return lstHorarioMartes;
	}

	public void setLstHorarioMartes(List<DetalleHorario> lstHorarioMartes) {
		this.lstHorarioMartes = lstHorarioMartes;
	}

	public List<DetalleHorario> getLstHorarioMiercoles() {
		return lstHorarioMiercoles;
	}

	public void setLstHorarioMiercoles(List<DetalleHorario> lstHorarioMiercoles) {
		this.lstHorarioMiercoles = lstHorarioMiercoles;
	}

	public List<DetalleHorario> getLstHorarioJueves() {
		return lstHorarioJueves;
	}

	public void setLstHorarioJueves(List<DetalleHorario> lstHorarioJueves) {
		this.lstHorarioJueves = lstHorarioJueves;
	}

	public List<DetalleHorario> getLstHorarioViernes() {
		return lstHorarioViernes;
	}

	public void setLstHorarioViernes(List<DetalleHorario> lstHorarioViernes) {
		this.lstHorarioViernes = lstHorarioViernes;
	}

	public List<DetalleHorario> getLstHorarioSabado() {
		return lstHorarioSabado;
	}

	public void setLstHorarioSabado(List<DetalleHorario> lstHorarioSabado) {
		this.lstHorarioSabado = lstHorarioSabado;
	}


}
